/*******************************************************************************
  * @file    lcd4bit.h
  * @author  chumanhcuong@hlab.com.vn
  * @version V1.0
  * @date    26-05-2012
  * @brief   This library support for GT2
  ******************************************************************************/
	
#include "stm32f10x.h"
#include <stdlib.h>
#include <stdbool.h>
#include "global.h"

/*****************************************************************************/
/* DEFINITION OF MACRO                                                       */
/*****************************************************************************/
#define RS_PIN                    GPIO_Pin_1	//output
#define RS_PORT                   GPIOB
#define RS_CLK                    RCC_APB2Periph_GPIOB 

#define RW_PIN                    GPIO_Pin_7	//output
#define RW_PORT                   GPIOA
#define RW_CLK                    RCC_APB2Periph_GPIOA

#define EN_PIN                    GPIO_Pin_0	//output
#define EN_PORT                   GPIOB
#define EN_CLK                    RCC_APB2Periph_GPIOB 

#define D0_PIN                    GPIO_Pin_9	//output
#define D0_PORT                   GPIOB
#define D0_CLK                    RCC_APB2Periph_GPIOB 
 
#define D1_PIN                    GPIO_Pin_10	//output
#define D1_PORT                   GPIOB
#define D1_CLK                    RCC_APB2Periph_GPIOB

#define D2_PIN                    GPIO_Pin_11	//output
#define D2_PORT                   GPIOB
#define D2_CLK                    RCC_APB2Periph_GPIOB

#define D3_PIN                    GPIO_Pin_12	//output
#define D3_PORT                   GPIOB
#define D3_CLK                    RCC_APB2Periph_GPIOB 


#define Nibble                     4

#define LCD_Delayms(x)               VP_DelayMs(x)

/*****************************************************************************/
/* DEFINITION OF TYPES                                                       */
/*****************************************************************************/

typedef struct {
	void  (*ClearScreen)(void);
	void  (*SetCursorFirstTop)(void);
	void  (*SetCursorFirstBot)(void);
  void  (*SetCursorLocal)(char,char);
	void  (*IOInit)(void);
	void  (*IOSetPin)(int);    //IO set
  void  (*IOClrPin)(int);    //IO clear bit
	void  (*WriteData)(int);
	void  (*WriteCmd)(int);
	void  (*WriteString)(char*,char);
	void  (*Printf)(char*,char,char);
	void  (*ResetBuffer)(void);
	void  (*ClearLine)(char);
	bool  StatusFlag;
	bool  ForceDisp;
	char  ScreenBuffer[16];
	int  SwitchLine;
}LCD_Class ;

/******************************************************************************/
/* DECLARATION OF GLOBAL VARIABLES                                            */
/******************************************************************************/
extern LCD_Class LCD;
/******************************************************************************/
/**    DEFINE OF APIs                                                         */
/******************************************************************************/
/**
  @brief LCD Init 16x2, 5x8 matrix display, disable cursor
  @param None
  @retval None
  */
int LCDInit(void);
/******************************************************************************
** Function name: LCD_EnableCurcor()
** Description: The function enable display curcor
** Parameter X : None
** Return value: None
** Remarks: global variables used, side effects
******************************************************************************/
void LCD_EnableCurcor(void);
/******************************************************************************
** Function name: LCD_DisableCurcor()
** Description: The function disable display curcor
** Parameter X : None
** Return value: None
** Remarks: global variables used, side effects
******************************************************************************/
void LCD_DisableCurcor(void);
/********************** End of file *************************/
/*									Copyright Cuong Chu 2013                */
/************************************************************/
